/*
 * AuxiliaryActivity.h
 *
 *  Created on: 19 Aug 2011
 *      Author: Allan
 */

#ifndef AUXILIARYACTIVITY_H_
#define AUXILIARYACTIVITY_H_

// GeoReact includes
#include <Utils/Types.h>
#include <Core/Activity.h>

class AuxiliaryActivity : public Activity
{
public:
	AuxiliaryActivity();
	
	AuxiliaryActivity(const vector<string>& species);
	
	AuxiliaryActivity(const vector<string>& species, const ActivityCoefficient& activitycoeff);
	
	virtual 
	~AuxiliaryActivity();
	
	void
	SetActivityCoefficient(const string& species, const ActivityCoefficient& activitycoeff);
	
	virtual const VectorXd
	ActivityCoefficients(double T, double P, const VectorXd& n) const;
	
	virtual const VectorXd
	Activities(double T, double P, const VectorXd& n) const = 0;
	
protected:
	/// The species for which the activity instance will compute the activity and activity coefficient
	vector<string> species;
	
	/// The activity coefficient functions of each aqueous species
	vector<ActivityCoefficient> activitycoeffs;
};


#endif /* AUXILIARYACTIVITY_H_ */
